package com.springboot.demo.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.springboot.demo.entity.User;
import com.springboot.demo.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;

import java.util.Date;

/**
 * @author wubc683
 * @desc
 * @date 2021-08-24 17:18
 */
//@Slf4j
//public class TokenUtils {
//
//    private static final long EXPIRE_TIME = 15 * 60 * 1000;
//    private static final String TOKEN_SECRET = "token123456";  //密钥盐
//
//    /**
//     * 签名生成
//     *
//     * @param user
//     * @return
//     */
//    public static String sign(User user) {
//        String token = null;
//        Date expiresAt = new Date(System.currentTimeMillis() + EXPIRE_TIME);
//        token = JWT.create()
//                .withIssuer("auth0")
//                .withClaim("username", user.getUsername())
//                .withExpiresAt(expiresAt)
//                // 使用了HMAC256加密算法。
//                .sign(Algorithm.HMAC256(TOKEN_SECRET));
//        return token;
//    }
//
//    /**
//     * 签名验证
//     *
//     * @param token
//     * @return
//     */
//    public static boolean verify(String token) {
//        try {
//            JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET)).withIssuer("auth0").build();
//            DecodedJWT jwt = verifier.verify(token);
//            System.out.println("认证通过：");
//            System.out.println("issuer: " + jwt.getIssuer());
//            System.out.println("username: " + jwt.getClaim("username").asString());
//            System.out.println("过期时间：      " + DateUtils.format(jwt.getExpiresAt()));
//            return true;
//        } catch (Exception e) {
//            return false;
//        }
//    }
//
//    /**
//     * 获取用户id
//     * @param token
//     * @return: java.lang.Long
//     */
//    public static Long getUserIdByToken(String token){
//        String s = JWT.decode(token).getAudience().get(0);
//        return Long.valueOf(s);
//    }
//}